home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-04-16 | 4.1 KB | 138 lines | [TEXT/CWIE] |
- // InvertedAccessor.h
- // Copyright: © 1994 - 1996-1997 - 1998 by Apple Computer, Inc., all rights reserved.
- // Implements ExactSearch and RankedSearch over InvertedIndices
-
- #pragma once
- #ifndef InvertedAccessor_h
- #define InvertedAccessor_h
-
- #pragma import on
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=power
- #endif
-
- #include "RankedAccessor.h"
-
- #pragma IA_BEGIN_EXPORTS
-
- // classes needed for private method declarations
- class InvertedIndex;
- class RankedQuery;
- class Similarity;
- class InvertedHitQueue;
- class Progress;
- class IAQuery;
- class IABooleanQuery;
-
-
- const uint32 InvertedAccessorType = 'Inv0';
-
- class InvertedAccessor : public virtual RankedAccessor {
- public:
- InvertedAccessor(InvertedIndex** indices, uint32 indexCount, uint32 t = InvertedAccessorType);
- ~InvertedAccessor();
-
- uint32 RankedSearch(byte* textQuery, uint32 textQueryLen,
- RankedQueryDoc* docQuery, uint32 docQueryLen,
- RankedHit** results, uint32 resultLen,
- uint32 matchingTermsLen,
- RankedProgressFn* progressFn,
- clock_t progressFreq,
- void* appData);
-
- uint32 RankedSearch(IADocText* textQuery,
- RankedQueryDoc* docQuery, uint32 docQueryLen,
- RankedHit** results, uint32 resultLen,
- uint32 matchingTermsLen,
- RankedProgressFn* progressFn,
- clock_t progressFreq,
- void* appData);
-
- uint32 RankedSearchBoolean(byte* text, uint32 textLen,
- RankedHit** results, uint32 resultLen,
- RankedProgressFn* progressFn,
- clock_t progressFreq,
- void* appData);
-
- void SetBooleanAndOperator(UInt16 andOp = '&');
- void SetBooleanOrOperator(UInt16 orOp = '|');
- void SetBooleanNotOperator(UInt16 notOp = '!');
- void SetBooleanLeftFence(UInt16 leftfence = '\(');
- void SetBooleanRightFence(UInt16 rightfence = '\)');
-
- UInt16 GetBooleanAndOperator() const;
- UInt16 GetBooleanOrOperator() const;
- UInt16 GetBooleanNotOperator() const;
- UInt16 GetBooleanLeftFence() const;
- UInt16 GetBooleanRightFence() const;
-
- protected:
- void Initializing();
-
- IABlockSize InitsSize();
- void StoringInits(IAOutputBlock* output);
- void RestoringInits(IAInputBlock* input);
- void UpdatingInits(IAInputBlock* input);
- void ExtendingInits();
-
- TermFreq TrimmedQuerySize(TermFreq querySize);
- uint32 RankedSearchIndices(IAQuery* query, Progress* prog,
- RankedHit** results, uint32 resultLen, uint32 nTerms);
-
- void TrimRankedQuery(IAQuery* query);
- bool RankedSearchIndex(uint32 i, IAQuery* query,
- Progress* prog, InvertedHitQueue* hitQueue,
- uint32 resultLen, uint32 nTerms);
-
- byte** GetDocNorms() const;
-
- uint32 RankSearchBooleanIndices ( Progress* prog, RankedHit** results, uint32 resultLen);
- void RankedSearchBooleanIndex(uint32 i, Progress* prog, InvertedHitQueue* hitQueue, uint32 resultLen);
- void PutAway(DocID docID, uint32 i, float sum, uint32 headcnt, InvertedHitQueue* hitQueue, uint32 resultLen, Progress* prog);
-
- uint32 GetInvertedRankedQueryMinTerms () const {return InvertedRankedQueryMinTerms;}
- uint32 GetInvertedRankedQueryMaxTerms () const {return InvertedRankedQueryMaxTerms;}
-
- void SetInvertedRankedQueryMinTerms (uint32 minValue = 10) {InvertedRankedQueryMinTerms = minValue;}
- void SetInvertedRankedQueryMaxTerms (uint32 maxValue = 50) {InvertedRankedQueryMaxTerms = maxValue;}
-
-
- private:
-
- friend class IABooleanQueryTermNode;
- byte** docNorms;
- IAIndex** UpcastIndices(InvertedIndex** is, uint32 c);
- InvertedAccessor(InvertedAccessor&);
- float fAveNormalization;
- uint32 fTotalDocs;
- uint32 fTotalNorm;
-
- /// query trimming speeds large queries by discarding low-scoring terms
- uint32 InvertedRankedQueryMinTerms;
- uint32 InvertedRankedQueryMaxTerms;
-
-
- IABooleanQuery* fBoolquery;
-
- // data members to support update operation;
- DocID* fOldNumberOfDocs;
- DocID* fNewNumberOfDocs;
-
- };
-
- inline byte** InvertedAccessor::GetDocNorms() const
- {
- return docNorms;
- }
-
- IAExceptionCode IAAccessorInvalidQuery = 'VAIQ';
-
- #pragma IA_END_EXPORTS
-
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=reset
- #endif
-
- #pragma import reset
- #endif
-